home *** CD-ROM | disk | FTP | other *** search
- property pPointerSprite, pTextSprite, pTextField, pCurVal, pCallBackObj, pRefcon, pRange, pMin, pMax, pSliderLeft, pSliderWidth, pActive
-
- on new me, propList
- set pPointerSprite to getaProp(propList, #thumbSprite)
- set pTextSprite to getaProp(propList, #textSprite)
- set pTextField to getaProp(propList, #textField)
- set pMin to getaProp(propList, #min)
- set pMax to getaProp(propList, #max)
- set pCurVal to getaProp(propList, #cur)
- set pRange to pMax - pMin
- set pActive to getaProp(propList, #active)
- set pSliderLeft to getaProp(propList, #left)
- set pSliderWidth to getaProp(propList, #width)
- set pActive to getaProp(propList, #active)
- set pCallBackObj to getaProp(propList, #callback)
- set pRefcon to getaProp(propList, #ref)
- SetVal(me, pCurVal)
- SetEnabled(me, pActive)
- return me
- end
-
- on Drag me
- if not pActive then
- exit
- end if
- repeat while the stillDown
- set H to min(max(the mouseH, pSliderLeft), pSliderLeft + pSliderWidth)
- set the locH of sprite pPointerSprite to H
- updateStage()
- set loc to the locH of sprite pPointerSprite - pSliderLeft
- set newVal to (pRange * loc / pSliderWidth) + pMin
- SetVal(me, newVal)
- if objectp(pCallBackObj) then
- DoDrag(pCallBackObj, pRefcon, newVal)
- end if
- end repeat
- if objectp(pCallBackObj) then
- EndChange(pCallBackObj)
- end if
- end
-
- on CalcVal me, numerator, denom, otherDenom
- set val to otherDenom * numerator / denom
- return val
- end
-
- on TextOut me
- if voidp(pCurVal) then
- put " " into field pTextField
- else
- put string(integer(pCurVal)) into field pTextField
- end if
- end
-
- on keyBoardInputDown me, k
- if not pActive then
- exit
- end if
- if "-0123456789" & BACKSPACE contains k then
- pass()
- else
- dontPassEvent()
- end if
- end
-
- on keyBoardInputUp me, k
- if not pActive then
- exit
- end if
- set v to field pTextField
- if v = "-" then
- set v to -0
- else
- set v to value(v)
- end if
- if v < pMin then
- put string(pMin) into field pTextField
- else
- if v > pMax then
- put string(pMax) into field pTextField
- end if
- end if
- set pCurVal to value(field pTextField)
- changeNumber(pCallBackObj, pCurVal, pRefcon)
- puppetSprite(pPointerSprite, 1)
- set loc to CalcVal(me, pCurVal - pMin, pRange, pSliderWidth)
- set the locH of sprite pPointerSprite to pSliderLeft + loc
- if objectp(pCallBackObj) then
- DoDrag(pCallBackObj, pRefcon, pCurVal)
- end if
- if objectp(pCallBackObj) then
- EndChange(pCallBackObj, pRefcon, pCurVal)
- end if
- end
-
- on SetVal me, newVal
- puppetSprite(pPointerSprite, 1)
- set pCurVal to newVal
- if voidp(newVal) then
- set newVal to max(0, pMin)
- end if
- TextOut(me)
- set loc to CalcVal(me, newVal - pMin, pRange, pSliderWidth)
- set the locH of sprite pPointerSprite to pSliderLeft + loc
- end
-
- on SetEnabled me, enabled
- set pActive to enabled
- enableInterfaceElement(pPointerSprite, enabled)
- enableInterfaceElement(pTextSprite, enabled)
- end
-
- on Release me
- puppetSprite(pPointerSprite, 0)
- end
-